package com.zhentao.pojo;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.util.Date;
import lombok.Data;

/**
 * 用户表
 * @TableName user
 */
@TableName(value ="user")
@Data
public class User {
    /**
     * 用户ID（唯一标识）
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 登录账号（可选，邮箱优先）
     */
    private String username;

    /**
     * 登录邮箱（必选，需验证，3.1.1注册要求）
     */
    private String email;

    /**
     * 登录密码（SHA-256加密，8.2安全需求）
     */
    private String password;

    /**
     * 用户昵称（个人中心展示名）
     */
    private String nickname;

    /**
     * 真实姓名（不可修改，3.5.1明确要求）
     */
    @TableField(value = "real_name")
    private String realName;

    /**
     * 头像图片路径（个人中心展示）
     */
    private String avatar;

    /**
     * 所属国家ID（关联国家，3.5.1联系信息）
     */
    @TableField("country_id")
    private Long countryId;

    /**
     * 联系电话（3.5.1联系信息）
     */
    private String phone;

    // 人脸图片路径
    private String faceImage;


    /**
     * 海员认证状态(0-未认证;1-已认证;2-审核中)
     */
    @TableField("sailor_auth_status")
    private Integer sailorAuthStatus;

    /**
     * 邮箱验证状态(0-未验证;1-已验证)
     */
    @TableField("email_verified")
    private Integer emailVerified;

    /**
     * 账号状态(0-禁用;1-正常)
     */
    private Integer status;

    /**
     * 注册时间
     */
    @TableField("create_time")
    private Date createTime;

    /**
     * 更新时间（信息修改时自动更新）
     */
    @TableField("update_time")
    private Date updateTime;

    // 以下字段不存储在数据库中，用于好友状态判断

    /**
     * 是否已是好友
     */
    @TableField(exist = false)
    private Boolean isFriend = false;

    /**
     * 是否已发送好友申请
     */
    @TableField(exist = false)
    private Boolean requestSent = false;

    /**
     * 是否可以重新发送好友申请（被拒绝后）
     */
    @TableField(exist = false)
    private Boolean canResend = false;

    /**
     * 是否可以添加为好友（没有好友关系）
     */
    @TableField(exist = false)
    private Boolean canAdd = false;

    /**
     * 好友关系状态（0-无关系，1-待通过，2-已通过，3-被拒绝）
     */
    @TableField(exist = false)
    private Integer friendStatus = 0;


}
